package cn.ljy.uem.service;

import cn.hutool.poi.excel.ExcelWriter;
import cn.ljy.authority.service.BaseService;
import cn.ljy.common.exception.model.MyWebException;
import cn.ljy.common.utils.page.Pagination;
import cn.ljy.uem.model.SchoolTeachingTaskStudent;
import cn.ljy.uem.model.SchoolTeachingTaskTeacher;
import cn.ljy.uem.model.query.SchoolTeachingTaskStudentQuery;
import cn.ljy.uem.model.query.SchoolTeachingTaskTeacherQuery;

import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;


/**
 * 学校教学班级教师服务
 *
 * @author 廖振豪
 * @date 2022/07/21
 */
public interface SchoolTeachingTaskTeacherService {
    /**
     * 根据id读取对象
     *
     * @param teachingTaskId
     * @param teacherId
     * @return
     */
    SchoolTeachingTaskTeacher get(@NotNull(message="教学班ID不能为空") java.io.Serializable teachingTaskId, @NotNull(message="教师ID不能为空") java.io.Serializable teacherId) throws MyWebException;

    /**
     * 添加对象
     * 说明：
     *
     * @param teacher 部分字段必须有值，详见文档
     */
    void save(@NotNull(message="传递参数不能为null") @Valid SchoolTeachingTaskTeacher teacher);

    /**
     * 编辑对象信息
     * 说明：
     *
     * @param teacher 部分字段必须有值，详见文档
     */
    void update(@NotNull(message="传递参数不能为null") @Valid SchoolTeachingTaskTeacher teacher);

    /**
     * 批量删除指定对象
     *
     * @param ids 多个对象的主键集合
     */
    void delete(@NotNull(message="传递参数不能为null") Integer teachingTaskId,@NotEmpty(message = "操作失败：请选择要移除的记录") Serializable[] ids);

    /**
     * 查询
     *
     * @param query 查询条件类
     * @return 分页对象
     */
    List<SchoolTeachingTaskTeacher> findAll(SchoolTeachingTaskTeacherQuery query);

    /**
     * 分页查询
     *
     * @param page     当前页面
     * @param pageSize 每页最多显示的记录数
     * @param query    查询条件类
     * @return 分页对象
     */
    Pagination findAll(Integer page, Integer pageSize, SchoolTeachingTaskTeacherQuery query);
}
